nuxt-simple-sitemap
Version:
Powerfully flexible XML Sitemaps that integrate seamlessly, for Nuxt.
23 lines (22 loc) • 850 B
JavaScript
import { createError, defineEventHandler } from "h3";
import { parseURL } from "ufo";
import { createSitemap } from "../sitemap/nitro.mjs";
import { useSimpleSitemapRuntimeConfig } from "../utils.mjs";
export default defineEventHandler(async (e) => {
const path = parseURL(e.path).pathname;
if (!path.endsWith("-sitemap.xml"))
return;
const { sitemaps } = useSimpleSitemapRuntimeConfig();
const sitemapName = path.replace("-sitemap.xml", "").replace("/", "");
const isChunking = typeof sitemaps.chunks !== "undefined" && !Number.isNaN(Number(sitemapName));
if (!(sitemapName in sitemaps) && !isChunking) {
return createError({
statusCode: 404,
message: `Sitemap "${sitemapName}" not found.`
});
}
return createSitemap(e, isChunking ? {
...sitemaps.chunks,
sitemapName
} : sitemaps[sitemapName]);
});